package org.jplcc;

/**
 * The enum that defines the constants that are used to identify generic PLC
 * types, called JPLCC types.
 */

public enum Type {

    /**
     * The constant that identifies the <code>boolean</code> data type. The
     * <code>boolean</code> data type has only two possible values: true and
     * false. Use this data type for simple flags that track true/false
     * conditions. This data type represents one bit of information.
     */
    BOOL(),

    /**
     * The constant that identifies the <code>boolean</code> array data type.
     */
    BOOL_ARRAY(),

    /**
     * The constant that identifies the <code>byte</code> data type. The
     * <code>byte</code> data type is an 8-bit signed two's complement integer.
     * It has a minimum value of -128 and a maximum value of 127 (inclusive).
     */
    BYTE(),

    /**
     * The constant that identifies the <code>byte</code> array data type.
     */
    BYTE_ARRAY(),

    /**
     * The constant that identifies the <code>short</code> data type. The
     * <code>short</code> is a 16-bit signed two's complement integer. It has a
     * minimum value of -32,768 and a maximum value of 32,767 (inclusive).
     */
    SHORT(),

    /**
     * The constant that identifies the <code>short</code> array data type.
     */
    SHORT_ARRAY(),

    /**
     * The constant that identifies the <code>int</code> data type. The
     * <code>int</code> is a 32-bit signed two's complement integer. It has a
     * minimum value of -2,147,483,648 and a maximum value of 2,147,483,647
     * (inclusive)
     */
    INT(),

    /**
     * The constant that identifies the <code>int</code> array data type.
     */
    INT_ARRAY(),

    /**
     * The constant that identifies the <code>long</code> data type. The
     * <code>long</code> is a 64-bit signed two's complement integer. It has a
     * minimum value of -9,223,372,036,854,775,808 and a maximum value of
     * 9,223,372,036,854,775,807 (inclusive)
     */
    LONG(),

    /**
     * The constant that identifies the <code>long</code> array data type.
     */
    LONG_ARRAY(),

    /**
     * The constant that identifies the <code>float</code> data type. The
     * <code>float</code> data type is a single-precision 32-bit IEEE 754
     * floating point. Its range of values is beyond the scope of this
     * documentation, but is specified in section 4.2.3 of the Java Language
     * Specification
     */
    FLOAT(),

    /**
     * The constant that identifies the <code>float</code> array data type.
     */
    FLOAT_ARRAY(),

    /**
     * The constant that identifies the <code>double</code> data type. The
     * <code>double</code> data type is a double-precision 64-bit IEEE 754
     * floating point. Its range of values is beyond the scope of this
     * documentation, but is specified in section 4.2.3 of the Java Language
     * Specification.
     */
    DOUBLE(),

    /**
     * The constant that identifies the <code>double</code> array data type.
     */
    DOUBLE_ARRAY(),

    /**
     * The constant that identifies the <code>Date</code> data type. The
     * <code>Date</code> data type represents a specific instant in time, with
     * millisecond precision.
     */
    DATE(),

    /**
     * The constant that identifies the <code>Date</code> array data type.
     */
    DATE_ARRAY(),

    /**
     * The constant that identifies the <code>String</code> data type. The
     * <code>String</code> data type represents character strings
     */
    STRING(),

    /**
     * The constant that identifies the <code>String</code> array data type.
     */
    STRING_ARRAY();
}
